home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / program / qlib205.zip / QLIB.ZIP / H / QLIB.H < prev    next >
C/C++ Source or Header  |  1997-06-19  |  5KB  |  137 lines

  1. // Warning : this file contains code! (if you are using Watcom C)
  2.  
  3. #include <stddef.h>
  4.  
  5. #ifndef __QLIB_H__
  6. #define __QLIB_H__
  7.  
  8. #ifdef __cplusplus
  9.   extern "C" {
  10. #endif
  11.  
  12. extern void _int3_(void);    //calls INT 3 (to easily place breakpts)
  13. extern void getint(byte v);         /*ax:edx == seg:off     */
  14. extern void getrmint(byte v);       /*ax:dx  == seg:off     */
  15. extern sbyte setint(byte v,word s,dword off);
  16. extern sbyte setrmint(byte v,word s,word off);
  17. extern void alloc_callback(dword off,dword regs);   // ret: cx:dx = real mode loc.  //regs=&callstruct
  18.   #define CB_RETF 0
  19.   #define CB_IRET 1
  20. extern void free_callback(word seg,word off);  // in: seg:off=real mode loc.  */
  21. extern void _iret(dword regs); // used to end a callback PROC (iret stack frame)
  22. extern void _retf(dword regs); // used to end a callback PROC (retf stack frame)
  23. extern dword alloc_phys(dword loc,dword siz);
  24. extern dword free_phys(dword loc);
  25. extern byte lock_ram(dword off,dword siz);
  26. extern byte unlock_ram(dword off,dword siz);
  27. extern byte lock_all(byte uselockonly);  //returns amount locked
  28. extern void uninitall(void);   //uninit everything thru atexit
  29. extern void setmode50(void);
  30.  
  31. extern void irq_enable(byte a);
  32. extern void irq_disable(byte a);
  33.  
  34.  //see pack.txt for explaination of everything below
  35. extern sbyte pack_init(word siz1,word packs); //a special file IO sub-system
  36. extern sbyte pack_uninit(void);               //free buffers and disable the sub-system
  37. extern sword pack_open(byte *strg);           //allows reading of WAD type files
  38. extern sword pack_open_hdr(byte *strg,byte *hdr);  //Same but with header already loaded
  39. extern sbyte pack_close(word);    //closes a packed file opened with pack_open() or pack_open_hdr()
  40.  
  41. extern byte _os_typ;                /* see os.txt */
  42. extern byte _os_ver_major;
  43. extern byte _os_ver_minor;
  44. extern byte _dos_ver_major;
  45. extern byte _dos_ver_minor;
  46. extern word _dosXver;        //DOS extender version (binary value)
  47. extern byte _dosXtyp;        //DOS extender type (0=PMODEW 1=DOS/4GW 2=DOS32)
  48.   #define DOSX_PMODEW 0
  49.   #define DOSX_DOS4GW 1
  50.   #define DOSX_DOS32 2   //not implemented any more
  51.   #define DOSX_UNKNOWN 0xff
  52. extern word errno;        //last error code
  53. extern word selcode;         /*selectors*/
  54. extern word seldata;
  55. extern word selzero;
  56. extern dword _environ;       /*linear addr to enviroment*/
  57. extern dword _psp;           //linear addr to your PSP
  58. extern dword _dta;           //linear addr to your DTA (it's not in your PSP)
  59. extern dword _base;          //always 0
  60. extern byte _fpu;          /* flag : 1=80387 or better present  0=otherwise */
  61. extern byte _8087;         /* for WATCOM compatibility */
  62. extern byte _argstr;    /* ;129 dup (?) */
  63. extern byte ** _argv;
  64. extern byte _argc;
  65. extern byte _pmmode;        //1=RAW 2=XMS 4=VCPI 8=DPMI
  66.   #define SRV_DPMI 3
  67.   #define SRV_VCPI 2
  68.   #define SRV_XMS 1
  69.   #define SRV_RAW 0
  70. extern dword _filename;     //same as _argv[0]
  71. extern word _ds_;         //these are loaded when certain INTs are called
  72. extern word _es_;         // INT 10h,33h
  73. extern word _8kbufferseg;  //RMODE seg     //free to use as you like
  74. extern dword _8kbuffer;    //linear addr
  75. extern byte _processor;    /* processor type : 3=386 4=486 5=586 */
  76. extern byte _cpu;          /* processor type : same */
  77.  
  78.   // not used much - If I do I'll try and use ANSI C error codes
  79.  
  80. extern void NULLPROC(void);
  81.  
  82. //this is used with DPMI funcs #30x  (callbacks and calling RMODE)
  83. struct callstruct {   //50 bytes  (32h)
  84.   dword edi;     //0
  85.   dword esi;     //4
  86.   dword ebp;     //8
  87.   dword res;     //reserved
  88.   dword ebx;     //0ch
  89.   dword edx;     //10h
  90.   dword ecx;     //14h
  91.   dword eax;     //18h
  92.   dword flg;     //20h flags
  93.   dword es;      //22h segments (NOT selectors)
  94.   dword ds;      //24h "
  95.   dword fs;      //26h "
  96.   dword gs;      //28h "
  97.   dword ip;      //2ah ignored in some calls
  98.   dword cs;      //2ch "
  99.   dword sp;      //2eh must be 0 to use system stacks
  100.   dword ss;      //30h "
  101. };
  102.  
  103. struct dma_s {
  104.   dword siz;
  105.   dword off;
  106.   word sel;
  107.   word id;
  108.   dword phys;
  109.   word dmach;
  110. };  
  111.  
  112. // NOTE : these func auto take advantage of VDS
  113. // see DMA.TXT for explaintion of usage
  114. extern dword dma_alloc64(struct dma_s *);    /*==ERROR if not avail  */
  115. extern dword dma_alloc128(struct dma_s *);   /*==ERROR if not avail  */
  116. extern dword dma_free(struct dma_s *);
  117.  
  118. //Win95+ funcs
  119. extern sbyte win95_title_set(byte * name);
  120. extern sbyte win95_title_get(byte * name,dword strsiz);
  121. extern sbyte win95_vmtitle_set(byte * name);
  122. extern sbyte win95_vmtitle_get(byte * name,dword strsiz);
  123. extern sbyte win95_close_enable(void);
  124. extern sbyte win95_close_disable(void);
  125. extern sbyte win95_close_query(void);
  126. extern sbyte win95_close_ack(void);
  127. extern sbyte win95_close_cancel(void);
  128. #define WIN95_CLOSE_NOACK 0
  129. #define WIN95_CLOSE_ACK 1
  130.  
  131. #ifdef __cplusplus
  132.   }
  133. #endif
  134.  
  135. #endif
  136.  
  137.